White Paper
| Subject: |
IDE Hard Drive Capacity Barriers |
| Number: |
WP-9801-003 |
Revision: |
01 |
Date: |
08 July 1998 |
| Disclaimer: |
This Document is provided
as is without any warranty of any kind, either expressed or
implied. In no event will MAXTOR CORPORATION be liable to you for
any damages, including any loss of profit or savings, arising out
of the use or inability to use the information contained in this
document. Maxtor Corporation makes no representations or
warranties with respect to the contents hereof and specifically
disclaims any implied warranties of merchantability or fitness for
any particular purpose. |
Introduction
Capacity barriers, in reference to installing IDE hard drives, are
nothing new to the PC industry. As higher capacity disk drives emerge in
the market, end users have become frustrated when trying to install
these higher capacity drives into systems where the BIOS and/or
operating system's do not support the full capacity of the hard drive.
This paper will describe past, current, and future capacity barriers
associated with higher capacity disk drives and describe the solutions
being implemented to solve them.
Background
To understand the problem, one must first understand the history.
Today's I/O for disk drives is based on the original DOS-BIOS (Disk
operating system - Basic Input/Output System). Figure 1 shows the
DOS-BIOS as a layered model.
Figure 1 - DOS-BIOS layered model
Application programs deal with data to be stored to or retrieved from
the disk as named files. That is, when a word processing application
wishes to save a document, the document is saved as a named file. When
the application wishes to retrieve the document at a later date, the
document is requested as a named file.
The file manager manages the mapping from named files to locations on
the disk drive and then issues read and write commands via the Int 13
API to store or retrieve files. When a file is to be written, the file
manager reads the current directory on the disk to determine where the
file may be written, adds an entries to the directory for the file, and
then writes the file to the disk. When a file is read, the file manager
reads the directory to locate the file on the disk and then reads the
file. The Int 13 API interface is in fact operating system independent
so that the two upper layers could be MAC or some other operating system
with its associated file system.
The BIOS disk services convert the Int 13 API requests into ATA
interface requests for the disk drive and execute the actual data
transfer to or from the disk drive.
Let's look at the ATA interface and the Int 13 API interface in more
detail.
The ATA Interface
The ATA interface is a register driven, parallel bus. To transfer
data, the BIOS writes to defined register locations to set the starting
address of the data on the disk and the length of the data transfer,
then writes the command (read or write) to another register location to
cause the transfer of disk data to occur. The data on the disk is
formatted into 512 byte sectors and all transfers are an integer number
of sectors in length.
While today's disk drives support both Logical Block Addressing (LBA)
and Cylinder Head Sector addressing (CHS), historically BIOS's have used
CHS addressing. With CHS addressing, the starting address for a data
transfer is written into 8-bit registers as shown in figure 2.
| Register |
| Cylinder Low |
| Cylinder High |
| Sector Number |
| Device / Head |
Figure 2 - ATA address registers
The disk address is viewed as a number of cylinders each of which has
a number of heads. Each head can read or write a number of sectors on
each cylinder. The cylinder address is a 16-bit value, the least
significant 8-bits of which is defined in the Cylinder Low register and
the most significant 8-bits of which is defined in the Cylinder High
register. The head address is a 4-bit value which is defined in the
lower four bits of the Device/Head register. The sector address is an
8-bit value which is defined in the Sector Number register, however, the
first sector is defined as sector number 1. No sector 0 exists.
Therefore, up to 65,536 cylinders (216) can be addressed,
up to 16 heads (24) can be addressed, and up to 255 sectors
(28-1) can be addressed. This says that up to 267,386,880
sectors (65,536 x 16 x 255) can be addressed. At 512 bytes per sector,
this yields a maximum theoretical capacity of about 136.9 GB.
With LBA addressing, the 28 available address bits (16 + 8 + 4) are
viewed as a single LBA number. Since the value zero is included, up to
268,435,456 sectors (216 x 24 x 28) can be addressed for a maximum
capacity of about 137.4 GB.
The Int 13 API interface
The Int 13 API interface is also a register driven interface. The
higher layer, noted as the file manager layer in figure 1, places a data
transfer command and the parameters for the command into host processor
registers. It then causes an Interrupt 13 which activates the BIOS disk
services to execute the transfer. The starting address for the transfer
is written into 8-bit registers as shown in figure 3.
| Register |
| Cylinder Low |
| Cylinder High/Sector number |
| Head number |
Figure 3 - Int 13 API address registers
The Cylinder Low register contains the least significant eight bits
of the cylinder address. The Cylinder High/Sector number register
contains the two most significant bits of the cylinder address plus a
6-bit sector number value. The Head number register contains an 8-bit
head number.
Therefore, up to 1,024 cylinders (210) can be addressed,
up to 256 heads (28) can be addressed, and up to 63 sectors
(26-1) can be addressed. This says that up to 16,515,072
sectors (1,024 x 256 x 63) can be addressed. At 512 bytes per sector,
this yields a maximum theoretical capacity of about 8.456 GB.
With LBA addressing, the 24 available address bits (10 + 6 + 8) are
viewed as a single LBA number. Since the value zero is included, up to
16,777,216 sectors (210x 26 x 28) can be addressed for a maximum
capacity of about 8.601 GB.
Capacity Barriers
The 528 MB boundarySymptoms
Solutions
Early BIOS's had no idea that the capacity of a disk drive would ever
exceed 500 MB. As a result, when translating addresses from the Int 13
API to the ATA registers they simply took the 10-bit cylinder address
and placed it into the ATA Cylinder High and Cylinder Low registers
always zero filling the upper six bits of the Cylinder High register.
They took the 6-bit sector number address and placed it into the ATA
Sector Number register always zero filling the upper two bits. Finally,
they assumed that the head address never had more than four significant
bits so they took the lower four bits and placed them in the ATA
Device/Head register.
Therefore, up to 1,024 cylinders (210) could be addressed,
up to 16 heads (24) could be addressed, and up to 63 sectors
(26-1) could be addressed. Up to 1,032,192 sectors (1,024 x
16 x 63) could be addressed. At 512 bytes per sector, this yields a
maximum theoretical capacity of about 528.4 MB. This was the cause of
the "528 MB problem".
To overcome this, BIOS's implemented one of two new algorithms for
converting the Int 13 API address to the ATA address.
Since at that time many disk drives did not support LBA addressing,
the first and most prevalent algorithm was known as Bit Shift
Translation. This involved translating the cylinder and head addresses
so that the total number of sectors remained the same but the addresses
would fit within the register space. Table 1 describes the translations.
Table 1 - Bit shift translation
| ATA cylinder max address |
ATA head max address |
Int 13 cylinder max address |
Int 13 head max address |
Theoretical maximum capacity |
| 1C1,024 |
1H16 |
C=C |
H=H |
528.4 MB |
| 1,024C2048 |
1H16 |
C=C/2 |
H=H*2 |
1.057 GB |
| 2048C4096 |
1H16 |
C=C/4 |
H=H*4 |
2.114 GB |
| 4096C8192 |
1H16 |
C=C/8 |
H=H*8 |
4.228 GB |
| 8192C16384 |
1H16 |
C=C/16 |
H=H*16 |
8.456 GB |
| 16384C32768 |
1H8 |
C=C/32 |
H=H*32 |
8.456 GB |
| 32768C65536 |
1H4 |
C=C/64 |
H=H*64 |
8.456 GB |
For example, if the disk drive reports 16,384 cylinders and 16 heads
to the BIOS disk services, the BIOS disk services reports that it has
1,048 cylinders and 256 heads to the upper layers. Note that this yields
the same number of total sectors on the disk but the addresses for
cylinder and head now fit within the ten bits and eight bits of the Int
13 register fields. The BIOS disk services then translates these values
of sixteen and four bits when passing them to the ATA registers. These
translations yield the theoretical maximum capacities shown in table 1.
The reader should note that if the disk drive cannot be configured with
the number of cylinders and heads that fit into one of the translations
shown in table 1, the bit shift translation will not work. Also, since
the bit shift translation only translates the cylinder and head values,
if the number of sectors the drive reports is less than 63, the
theoretical maximum capacity cannot be achieved.
The second translation method is the LBA assist translation. This
translation can be utilized only if the disk drive supports LBA
addressing. With this translation, the BIOS disk services first
determines the total number of sectors reported by the disk drive by
multiplying the number of cylinders by the number of heads by the number
of sectors reported by the drive. It then reports to the upper layers a
configuration as shown in table 2.
Table 2 - LBA assist translation
| Total number of sectors reported |
Number of sectors reported |
Number of heads reported |
Number of cylinders reported |
Theoretical maximum capacity |
| 1 X 1,032,192 |
63 |
16 |
X/(63*16) |
528.4 MB |
| 1,032,192 X 2,064,384 |
63 |
32 |
X/(63*32) |
1.057 GB |
| 2,064,384 X 4,128,768 |
63 |
64 |
X/(63*64) |
2.114 GB |
| 4,128,768 X 8,257,536 |
63 |
128 |
X/(63*128) |
4.228 GB |
| 8,257,536 X 16,450,560 |
63 |
255 |
X/(63*255) |
8.422 GB |
With this translation the cylinder, head and sector address values
always fit into the Int 13 API registers. When the BIOS disk services
get the Int 13 address, it multiplies the three values getting a valid
LBA address for the disk drive. It then issues the command to the drive
using LBA addressing. Note that this translates the cylinder, head and
sector so that the entire capacity of the disk drive can be realized.
The 2.1 GB Barrier
Symptoms
Solutions
This barrier covers two distinct barrier's, hardware and software.
First the hardware. In order to solve the 528 MB problems, different
BIOS manufactures used different methods to do so. One such solution was
to take the top 2 bits from the Int 13h head register and use them for
bits 11 and 12 of the cylinder count. In doing this, the maximum head
value that could be stored in the remaining 6 bits of the head register
was 63 (64 heads total). No operating systems widely used this method of
translation. All bits of the head register are now assumed to define the
logical head count. In order to properly translate a drive with 4,096
physical cylinders you must divide the cylinder count by four (1,024
logical cylinders) and multiply the head count by four (128 logical
heads). But, since some BIOS use the top two bits of the head register
as part of the cylinders count, there is no way in which to define 128
heads. BIOS that handle drives in this fashion may hang during POST, in
which the BIOS does an Identify Drive command and tries to set the CHS
values.
Now the software. The DOS partition limitation is derived from the
File Allocation Table (FAT) that DOS uses to keep track of hard disk
space. The FAT is only capable of working with 32,768 bytes per cluster
and no more than 65,536 clusters. If you multiply the two numbers
together you get the maximum partition size that DOS can use of
2,147,483,648 bytes or 2,048 MB (2,147,483,648 / 1,0242).
The 4.2 GB Barrier
Symptoms
Solutions
Unfortunately, some systems store the number of heads reported as an
8-bit value. Hence if the BIOS reports 256 heads, then these systems
save only the lower eight bits resulting in a value of zero and the disk
drive will not configure. Referring to table 1, this occurs any time the
device reports 16 heads and greater than 8,192 cylinders to the Bit
Shift translation. Therefore, when the bit shift translation is used
with one these operating systems, the maximum capacity that can be
configured is 4.2 GB. Note that the LBA assist translation never reports
more than 255 heads so the problem does not exist with the LBA assist
translation.
The Latest Capacity Barrier
8.4 GB
Symptoms
Solutions
Both LBA translation methods discussed earlier use ID words 1,3 and 6
of the identify drive command. The maximum values for these are 16,383
cylinders, 16 heads and 63 sectors for a capacity of 8.456 GB. To go
beyond these boundaries, new extended INT 13 functions have been
defined. These new Int 13 functions do not pass the disk drive
addressing via the host registers. Instead the address of a Device
address packet in host memory is passed. The BIOS disk services then
reads this packet to determine the disk address. The address provided in
the Device address packet is a 64-bit LBA address. If the disk drive
supports LBA addressing the lower 28 bits of this address may be passed
directly to the ATA registers. If the device does not support LBA
addressing, the host converts the LBA address to a CHS address and
places that in the ATA registers. In this way, the entire 136.9 GB
capacity addressable via CHS or 137.4 GB addressable via LBA can be
unitized over the ATA bus.
The Symptom of Each Barrier
528 MB Barrier
Symptom: The total disk space reported to the operating system
will be 528 MB or less.
2.1 GB Barrier
Symptom: System hang occurs when the BIOS has a problem
translating the cylinders and heads and locks the system during POST
(power on self test).
NOTE: If the user is using
an operating system that uses the FAT 16 file system, multiple
partitions will have to be created to obtain the full size of the hard
drive.
4.2 GB Barrier
Symptom: System hangs at boot after the creation of partitions
on the drive.
8.4 GB Barrier
Symptoms: Since this is a new barrier, not all symptoms may be
known at this time. This a list a known issues when installing drives
greater than 8.4 GB:
- The total disk capacity reported to the operating system is 8.4 GB
or less.
- System hang occurs when the BIOS has a problem translating the
cylinders and heads and locks the system during POST (power on self
test).
- When attempting a format of the drive, errors occur. Usually the
operating system reports that there is bad sectors (trying to recover
lost allocation units) on the drive when in fact the drive is fine.
Solutions
Hardware solution:
Upgrade the system BIOS or use an Enhanced
IDE (EIDE) Interface or BIOS Extender card that provides the correct LBA
support for large capacity disk drives.
Software solution:
For those systems that do not provide the LBA
BIOS feature, Maxtor has had a solution since 1993, that is to use the
MaxBlast software. Software translation is an effective,
non-conventional means of translating sector addresses of large capacity
hard disk drives. Instead of loading a driver in the start-up files,
MaxBlast loads drivers before the operating system is loaded. The latest
version of MaxBlast can
be obtained from Maxtor's Internet site, www.maxtor.com.
Below is a list of BIOS, EIDE interface card manufacturers and
operating systems and the capacity range of each:
SYSTEM BIOS
NOTE: The BIOS listed below
are all "CORE" BIOS. Even though a BIOS is dated correctly or is the
current version, it may not be able to support extended interrupt 13
because of modification done to the "CORE" of the BIOS from the
motherboard manufacturer. Sometimes the manufacturer does not consult
BIOS manufacturers on updating the BIOS correctly. This sometimes causes
extended interrupt 13 to work in-correctly. The result can be either not
seeing the full capacity of the drive in FDISK or the drive working fine
for any amount of time then data will "wrap around" at the BIOS limit
and corrupt the boot sector of drive. If either one of these results may
occur if the BIOS CORE has been changed. The motherboard manufacturer
needs to be contacted to receive a BIOS upgrade for that specific
motherboard. The BIOS manufacturer CORE update will not fix these issues
because the of the possible modifications of the motherboard
manufacturer.
Phoenix: Version 4
Revision 6 or version 4 Revision 6 or greater can support capacities
greater than 8.4 GB. If the BIOS is revision 5.12, it does not support
extended interrupt 13. All Phoenix BIOS are Version 4, so 5.12 is an
older release than 6. Phoenix recommends Micro Firmware
(877-629-2467) for BIOS upgrades.
Award: BIOS dated
after November 1997 will support drives greater than 8.4 GB. Award
recommends Unicore
(800-800-2467) for BIOS upgrades.
American Megatrends INC.,
(AMI): BIOS versions with a date of January 1, 1998 or
greater support drives greater than 8.4 GB.
BIOS Upgrades and Controller Cards
BIOS upgrades can either be a controller card, a EPROM chip or a card
with just the BIOS on it. The cards, when set up correctly, are able to
override the current BIOS of the computer and large capacity hard disk
drives.
Micro
Firmware: (877-629-2467) Micro Firmware creates 3 types of
upgrades: an EPROM, a flash BIOS software and a controller card. Product
purchased from Micro Firmware starting January 1, 1998 and greater will
support extended interrupt 13. Existing customers should contact Micro
Firmware regarding flash BIOS upgrades.
Operating Systems
NOTE: Even though an
operating system supports drives greater than 8.4 GB, the computer may
still not support the larger drive. In this case a user must use
MaxBlast (included with retail kits or can be downloaded from Maxtor's
Internet site, www.maxtor.com) or purchase a controller card that
supports extended interrupt 13. Some operating systems also have limits
on partition size. The user may need to make multiple partitions on the
drive to receive its full capacity.
DOS 6.22 or Less: DOS 6.22 or less does
NOT support drives greater 8.4 GB. There are
NO solutions at this time.
Windows 95: Windows 95 version A (standard version)
does support extended interrupt 13 so it can support drives with
capacities greater than 8.4 GB. Because of the limitations of the FAT 16
file system, a minimum of five partitions will need to be
created on the hard drive.
Windows 95B / OSR2: Windows 95B (OSR2) does support
extended interrupt 13 which lets the operating system support drives
larger than 8.4 GB. Windows 95B (OSR2) also supports FAT 32 which lets
the user create one large partition
Windows 98: Windows 98 can support drives greater than
8.4 GB with use of extended interrupt 13. Windows 98 also uses FAT 32
which lets the user create one partition to the full capacity of the
drive.
Windows NT 3.5x: Windows NT 3.5x does NOT
support drives greater than 8.4 GB.
Windows NT 4.0: Windows NT 4.0 does support drivers
greater than 8.4GB. However when a drive larger than 8.4 Gigabytes is
being used as the primary bootable (primary master) device Windows NT
will NOT see more than 8.4 GB. This is a limit of Windows
NT 4.0. Microsoft has announced a service pack four, which will fix this
problem. Information relating to this service pack can be found in the
article Q183654 on Microsoft's web site.
Windows NT 5.0 (BETA): Windows NT 5.0 Beta has been
able to support drive capacities greater than 8.4 GB. Using NTFS has
also enabled the drive partition greater than 8.4 GB.
NOTE: Microsoft has no
plans to upgrade older versions of their operating systems to support
drives greater than 8.4 GB.
OS/2 Warp 3 and 4: Some versions of OS/2 are limited to
a boot partition size of 3.1 GB or 4.3 GB. This issue can be resolved
with downloading from IBM the latest Device Driver Pack. The file name
is "idedasd.exe". This driver will enable the boot partition to be as
large as 8.4 GB. HPFS of OS/2 will support up to 64 GB of drive space.
Novell: Currently, Novell NetWare will
NOT support drives greater than 8.4 GB. This is due in
part to NetWare's inability to support MAXLBA. Currently, NetWare
utilizes CHS values (words 1, 3 and 6 of the identify drive command) as
opposed to MAXLBA values (words 60 and 61). Novell is currently working
on disk drivers that support drive capacities greater 8.4 GB. These
drivers are projected for completion and release with NetWare 5.0 (A.K.A
MOAB). It is not known if Novell intends to develop driver updates for
earlier versions of NetWare. Customers will need to contact either a
Novell Authorized Reseller or Novell directly for further information on
driver updates.
Return To
Previous Page
Home | Products and
Technology | Service and
Support | About Maxtor |
Site Map
Copyright © 1998-99 Maxtor®
Corporation
Questions? Comments? Concerns? Please contact the Webmaster